def var_is_empty(var, strip_string=True):
    """
    判断变量是否为空（包括 None、空字符串、仅空格字符串、空列表、空字典、空集合等）

    :param var: 要检查的变量
    :param strip_string: 是否去除字符串两端的空格（默认 True）
    :return: 如果变量为空或仅含空格（字符串），返回 True；否则返回 False
    """
    if var is None:
        return True
    if isinstance(var, str):
        if strip_string:
            var = var.strip()  # 去除前后空格
        return not var  # 空字符串返回 True
    if isinstance(var, (list, dict, set, tuple)):
        return not var  # 空容器返回 True
    return False  # 其他情况（如数字、对象）返回 False


def filter_empty_data(data):
    """
    递归过滤掉字典/列表中的空数据
    
    参数:
        data: 要过滤的数据（字典、列表或其他类型）
        
    返回:
        过滤后的数据（不包含空数据）
    """
    if isinstance(data, dict):
        # 处理字典类型
        result = {}
        for key, value in data.items():
            filtered_value = filter_empty_data(value)
            if not is_empty(filtered_value):
                result[key] = filtered_value
        return result if not is_empty(result) else None
    
    elif isinstance(data, (list, tuple)):
        # 处理列表/元组类型
        result = []
        for item in data:
            filtered_item = filter_empty_data(item)
            if not is_empty(filtered_item):
                result.append(filtered_item)
        return result if not is_empty(result) else None
    
    else:
        # 基础类型直接返回
        return None if is_empty(data) else data
    
    
def is_empty(value):
    """
    判断一个值是否为空
    
    参数:
        value: 要检查的值
        
    返回:
        bool: 如果值为空返回True，否则返回False
    """
    if value is None:
        return True
    if isinstance(value, (str, list, tuple, dict, set)):
        return len(value) == 0
    return False
